package com.gnote.repair.domain;

/**
 * 通用返回实体类
 * 
 * @param <T> 返回数据类型
 */
public class Response<T> {
    
    /**
     * 是否成功标志
     */
    private boolean flag;
    
    /**
     * 消息信息
     */
    private String message;
    
    /**
     * 影响的行数
     */
    private int rows;
    
    /**
     * 返回数据
     */
    private T data;
    
    // 构造函数
    public Response() {
        this.flag = false;
        this.message = "操作失败";
        this.rows = 0;
        this.data = null;
    }
    
    // 成功构造函数
    public Response(T data) {
        this.flag = true;
        this.message = "操作成功";
        this.rows = 0;
        this.data = data;
    }
    
    // 成功构造函数（带行数）
    public Response(boolean flag, String message, int rows, T data) {
        this.flag = flag;
        this.message = message;
        this.rows = rows;
        this.data = data;
    }
    
    // getter和setter方法
    public boolean isFlag() {
        return flag;
    }
    
    public void setFlag(boolean flag) {
        this.flag = flag;
    }
    
    public String getMessage() {
        return message;
    }
    
    public void setMessage(String message) {
        this.message = message;
    }
    
    public int getRows() {
        return rows;
    }
    
    public void setRows(int rows) {
        this.rows = rows;
    }
    
    public T getData() {
        return data;
    }
    
    public void setData(T data) {
        this.data = data;
    }
    
    // 静态方法：创建成功响应
    public static <T> Response<T> success(T data) {
        Response<T> response = new Response<>();
        response.setFlag(true);
        response.setMessage("操作成功");
        response.setData(data);
        return response;
    }
    
    // 静态方法：创建成功响应（无数据）
    public static <T> Response<T> success() {
        Response<T> response = new Response<>();
        response.setFlag(true);
        response.setMessage("操作成功");
        return response;
    }
    
    // 静态方法：创建失败响应
    public static <T> Response<T> error(String message) {
        Response<T> response = new Response<>();
        response.setFlag(false);
        response.setMessage(message);
        return response;
    }
    
    // 静态方法：创建失败响应（带错误码）
    public static <T> Response<T> error(String message, int code) {
        Response<T> response = new Response<>();
        response.setFlag(false);
        response.setMessage(message);
        return response;
    }
}
